home *** CD-ROM | disk | FTP | other *** search
/ Aminet 6 / Aminet 6 - June 1995.iso / Aminet / util / blank / bserver_v14.lha / BServer_v1.4 / Sources.lha / Sources / server / gadgets.c < prev    next >
Encoding:
C/C++ Source or Header  |  1995-03-23  |  6.0 KB  |  219 lines

  1. #include <exec/types.h>
  2. #include <exec/memory.h>
  3. #include <exec/libraries.h>
  4. #include <intuition/gadgetclass.h>
  5. #include <string.h>
  6.  
  7. #include <proto/exec.h>
  8. #include <proto/intuition.h>
  9. #include <proto/gadtools.h>
  10.  
  11. #include "/include/server.h"
  12.  
  13.  
  14. struct Gadget *glist, *gad, *blank_gdg, *random_gdg, *list_gdg;
  15.  
  16. extern UWORD wwidth, wheight;
  17. extern struct List ClientsList, *ModeList;
  18. extern struct ModeNode *DisplayNode;
  19. extern UWORD delaySecs;
  20. extern UBYTE briLevel;
  21. extern BOOL CommodityActive, RandomClient;
  22. extern UWORD DefaultClient;
  23.  
  24. extern void FreeClientsList( void );
  25. extern struct List *CreateModeList( void );
  26. extern void DeleteModeList( void );
  27. extern void GetDisplayNodeFromID( void );
  28.  
  29. extern char *msg_timeout, *msg_random, *key_random,
  30.      *msg_hide, *key_hide, *msg_quit, *key_quit, *msg_blank, *key_blank,
  31.      *msg_killsel, *key_killsel, *msg_addcli, *key_addcli, *msg_brilevel;
  32.  
  33.  
  34.  /****************
  35.  *               *
  36.  * GADGETS STUFF *
  37.  *               *
  38.  ****************/
  39.  
  40. struct VisualInfo *vi;
  41. UWORD fonth;
  42. struct NewGadget newgdg = { 0, 0, 0, 0, NULL, NULL, 0, 0, 0, 0 };
  43. struct Screen *WBS;
  44. struct Library *GadToolsBase;
  45. struct IntuitionBase *IntuitionBase;
  46. UWORD wleft = (UWORD)~0, wtop = (UWORD)~0;
  47. struct DrawInfo *dri;
  48.  
  49. struct IntuiText it = { 0, 0, 0, 0, 0, NULL, NULL, NULL };
  50. UWORD maxstrlen;
  51.  
  52. UWORD CheckMax( STRPTR text, UWORD add_gdw, UWORD prev )
  53. {
  54. register UWORD ilength;
  55.  
  56. it.IText = text;
  57. if ( ( ilength = IntuiTextLength( &it ) + add_gdw ) > prev )
  58.     return( ilength );
  59. else
  60.     return( prev );
  61. }
  62.  
  63.  
  64. UWORD SetUpGadgets( void )
  65. {
  66. if ( CreateModeList() )
  67.     {
  68.     GetDisplayNodeFromID();
  69.  
  70.     if ( WBS = LockPubScreen( NULL ) )
  71.         {
  72.         fonth = WBS->Font->ta_YSize;
  73.         if ( fonth < 12 )
  74.             fonth = 12;
  75.         it.ITextFont = WBS->Font;
  76.         newgdg.ng_TextAttr = WBS->Font;
  77.         newgdg.ng_Height = fonth + 4;
  78.  
  79.         if ( vi = GetVisualInfo( WBS, TAG_END ) )
  80.             {
  81.             newgdg.ng_VisualInfo = vi;
  82.             newgdg.ng_TopEdge = WBS->BarHeight + 3;
  83.  
  84.             maxstrlen = 0;
  85.             maxstrlen = CheckMax( msg_timeout, 50, maxstrlen );
  86.             maxstrlen = CheckMax( msg_brilevel, 50, maxstrlen );
  87.             maxstrlen = CheckMax( msg_random, 26, maxstrlen );
  88.             maxstrlen = CheckMax( msg_hide, 0, maxstrlen );
  89.             maxstrlen = CheckMax( msg_quit, 0, maxstrlen );
  90.             maxstrlen = CheckMax( msg_blank, 0, maxstrlen );
  91.             maxstrlen = CheckMax( msg_killsel, 0, maxstrlen );
  92.             maxstrlen = CheckMax( msg_addcli, 0, maxstrlen );
  93.             newgdg.ng_LeftEdge = WBS->WBorLeft + maxstrlen - 30;
  94.  
  95.             gad = CreateContext (&glist);
  96.  
  97.             newgdg.ng_Flags = PLACETEXT_LEFT;
  98.             newgdg.ng_Width = 50;
  99.             newgdg.ng_GadgetText = msg_timeout;
  100.             newgdg.ng_GadgetID = TIMEOUT_GDG;
  101.             gad = CreateGadget( INTEGER_KIND, gad, &newgdg,
  102.                 GTIN_Number, delaySecs,
  103.                 GTIN_MaxChars, 5,
  104.                 TAG_END );
  105.  
  106.             newgdg.ng_TopEdge += gad->Height + 7;
  107.             newgdg.ng_GadgetText = msg_brilevel;
  108.             newgdg.ng_GadgetID = BRILEVEL_GDG;
  109.             gad = CreateGadget( INTEGER_KIND, gad, &newgdg,
  110.                 GTIN_Number, briLevel,
  111.                 GTIN_MaxChars, 3,
  112.                 TAG_END );
  113.  
  114.             newgdg.ng_Height = fonth - 1;
  115.             newgdg.ng_Width = 26;
  116.             newgdg.ng_GadgetID = RANDOM_GDG;
  117.             newgdg.ng_TopEdge += gad->Height + 7;
  118.             newgdg.ng_LeftEdge = WBS->WBorLeft + maxstrlen - 6;
  119.             newgdg.ng_GadgetText = msg_random;
  120.             random_gdg = gad = CreateGadget( CHECKBOX_KIND, gad, &newgdg,
  121.                 GTCB_Checked, RandomClient,
  122.                 GTCB_Scaled, TRUE,
  123.                 GT_Underscore, '_', TAG_END );
  124.  
  125.             newgdg.ng_Height = fonth + 2;
  126.             newgdg.ng_GadgetID = HIDE_GDG;
  127.             newgdg.ng_TopEdge += fonth + 2;
  128.             newgdg.ng_LeftEdge = WBS->WBorLeft + 4;
  129.             newgdg.ng_Flags = 0;
  130.             newgdg.ng_Width = maxstrlen + 16;
  131.             newgdg.ng_GadgetText = msg_hide;
  132.             gad = CreateGadget( BUTTON_KIND, gad, &newgdg,
  133.                 GT_Underscore, '_', TAG_END );
  134.             
  135.             newgdg.ng_GadgetID = QUIT_GDG;
  136.             newgdg.ng_TopEdge += gad->Height + 1;
  137.             newgdg.ng_GadgetText = msg_quit;
  138.             gad = CreateGadget( BUTTON_KIND, gad, &newgdg,
  139.                 GT_Underscore, '_', TAG_END );
  140.  
  141.             newgdg.ng_GadgetID = BLANK_GDG;
  142.             newgdg.ng_TopEdge += gad->Height + 1;
  143.             newgdg.ng_GadgetText = msg_blank;
  144.             blank_gdg = gad = CreateGadget( BUTTON_KIND, gad, &newgdg,
  145.                 GT_Underscore, '_', TAG_END );
  146.  
  147.             newgdg.ng_GadgetID = KILL_GDG;
  148.             newgdg.ng_LeftEdge = WBS->WBorLeft + maxstrlen + 22;
  149.             newgdg.ng_GadgetText = msg_killsel;
  150.             gad = CreateGadget( BUTTON_KIND, gad, &newgdg,
  151.                 GT_Underscore, '_', TAG_END );
  152.  
  153.             newgdg.ng_GadgetID = ADDCLIENTS_GDG;
  154.             newgdg.ng_TopEdge -= blank_gdg->Height + 1;
  155.             newgdg.ng_GadgetText = msg_addcli;
  156.             gad = CreateGadget( BUTTON_KIND, gad, &newgdg,
  157.                 GT_Underscore, '_', TAG_END );
  158.  
  159.             newgdg.ng_GadgetID = LIST_GDG;
  160.             newgdg.ng_TopEdge = WBS->BarHeight + 3;
  161.             newgdg.ng_GadgetText = NULL;
  162.             newgdg.ng_Height = gad->TopEdge - newgdg.ng_TopEdge - 2;
  163.             newgdg.ng_Flags = PLACETEXT_ABOVE;
  164.             list_gdg = gad = CreateGadget( LISTVIEW_KIND, gad, &newgdg,
  165.                 GTLV_Labels, &ClientsList,
  166.                 GTLV_Top, DefaultClient,
  167.                 GTLV_Selected, DefaultClient,
  168.                 GTLV_ShowSelected, NULL,
  169.                 TAG_END );
  170.  
  171.             newgdg.ng_GadgetID = MODEID_GDG;
  172.             newgdg.ng_TopEdge =  blank_gdg->TopEdge + blank_gdg->Height + 1;
  173.             newgdg.ng_LeftEdge = WBS->WBorLeft + 4;
  174.             newgdg.ng_Width = maxstrlen * 2 + 34;
  175.             newgdg.ng_GadgetText = NULL;
  176.             gad = CreateGadget( LISTVIEW_KIND, gad, &newgdg,
  177.                 GTLV_Labels, ModeList,
  178.                 GTLV_Top, DisplayNode->mn_Index,
  179.                 GTLV_Selected, DisplayNode->mn_Index,
  180.                 GTLV_ShowSelected, NULL,
  181.                 TAG_END );
  182.  
  183.             /* Set up gadgets */
  184.             if ( gad )
  185.                 {
  186.                 wwidth = (UWORD)(gad->LeftEdge + gad->Width + 4 + WBS->WBorRight);
  187.                 if ( GadToolsBase->lib_Version < 38 )
  188.                     wheight = (UWORD)(gad->TopEdge + gad->Height + 3 + fonth + WBS->WBorBottom);
  189.                 else
  190.                     wheight = (UWORD)(gad->TopEdge + gad->Height + 2 + WBS->WBorBottom);
  191.                 if ( wleft == ~0 && wtop == ~0 )
  192.                     {
  193.                     wleft = (WBS->Width - wwidth)>>1;
  194.                     wtop = (WBS->Height - wheight)>>1;
  195.                     }
  196.                 return( TRUE );
  197.                 }
  198.  
  199.             FreeGadgets( glist );
  200.             }
  201.         FreeVisualInfo( vi );
  202.         vi = NULL;
  203.         }
  204.     UnlockPubScreen( NULL, WBS );
  205.     }
  206. DeleteModeList();
  207.  
  208. return( FALSE );
  209. }
  210.  
  211.  
  212. void RemoveGadgets( void )
  213. {
  214. FreeGadgets( glist );
  215. FreeVisualInfo( vi );
  216. UnlockPubScreen( NULL, WBS );
  217. DeleteModeList();
  218. }
  219.